Mysql学习之constraint/key/primary key/unique/foreign key/constraint的关系

您所在的位置:网站首页 数据库 constraint Mysql学习之constraint/key/primary key/unique/foreign key/constraint的关系

Mysql学习之constraint/key/primary key/unique/foreign key/constraint的关系

2023-09-09 07:18| 来源: 网络整理| 查看: 265

1.constraint就是约束的意思,在MySQL中约束的表现形式有:not null/ primary key/unique隐含有约束功能。

2.如果为一个字段创建了约束,除非这个字段是not null ,否则就是为了这个字段即创建了约束又创建了索引,也就是说primary key为主键创建了约束和索引,unique也是一样。

但是当primary key 与constraint 关键字搭配使用的时候,将会忽视constraint 所创建的约束名与索引,其约束名与索引名皆为primary,比如:create table jc_one (id int ,names varchar(10) ,primary key(id))和create table jc_one (id int ,names varchar(10) ,constraint   my_self_index primary key(id))执行结果是一样的,因此在使用primary key的时候就不需要使用constraint了。

而unique 则不一样,如果unique不与constraint 搭配使用,则约束与索引名都默认为字段名称,而当使用unique与constraint 配合使用时,其约束名称与索引名称结尾constraint定义的一样,create table jc_one (id int ,names varchar(10) ,unique(id))的约束名与索引为id,而create table jc_one (id int ,names varchar(10) ,constraint my_self_key unique (id))索引名与约束名都是my_self_key。

注:如何验证以上结论呢,在mysql下的有个information_schema的数据库,该数据库下有个table_constraints表与 STATISTICS表,这两张表里分别存放着数据库中所有表的约束名与索引名,所以我们可以通过查看这两个表的变化,去查看结果

3.key与index 一样,只创建索引,不创建约束

4.foreign key 是建立外键关系,其与constraint搭配使用也是一样的,当然如果你不使用constraint的话,数据库会自动为你生成一个默认的约束名称与索引名称。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3